/**
  项目JS主入口
  百度地图
**/
var map = new BMap.Map("allmap",{enableMapClick:false});            // 创建Map实例  
map.enableScrollWheelZoom(true);
map.centerAndZoom("哈尔滨",12);      // 初始化地图,用城市名设置地图中心点
map.setMapStyle({style:'midnight'});
var geoc = new BMap.Geocoder();
var top_left_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_BOTTOM_RIGHT});// 右下角，添加比例尺
var top_left_navigation = new BMap.NavigationControl();  //左上角，添加默认缩放平移控件
var top_right_navigation = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL}); //右上角，仅包含平移和缩放按钮
/*缩放控件type有四种类型:
BMAP_NAVIGATION_CONTROL_SMALL：仅包含平移和缩放按钮；BMAP_NAVIGATION_CONTROL_PAN:仅包含平移按钮；BMAP_NAVIGATION_CONTROL_ZOOM：仅包含缩放按钮*/

map.addControl(top_left_control);        
map.addControl(top_left_navigation);     
//map.addControl(top_right_navigation);

var mapvLayer = null;

//map.addControl(new BMap.MapTypeControl());   //添加地图类型控件

var enterpriseopts = {
		width : 300,     // 信息窗口宽度
		height: 225,     // 信息窗口高度
		title : "企业信息" , // 信息窗口标题
		enableMessage:true//设置允许信息窗发送短息
	   };

var options = {
        //fillStyle: 'rgba(255, 50, 50, 0.6)',
		gradient: {
            '0': 'rgba(255, 50, 50, 0.6)',
            '0.5': 'rgba(255, 250, 50, 0.6)'
        },
        //fillStyle: 'rgba(255, 250, 50, 0.6)',
        shadowColor: 'rgba(255, 50, 50, 1)',
        shadowBlur: 30,
        globalCompositeOperation: 'lighter',
        methods: {
            click: function (item) {
                $.ajax({
        			type : "GET",
        			url : "map/infoWindow",
        			data : {
        				"id" : item.id
        			},
        			dataType : "json",
        			success : function(data) {
						var startDiv = "<div id='info' style='height:180px;overflow:auto;margin-top:5;'>";
						var endDiv = "</div>";
						var info = "<b>省份："+data.province+"</b><br/><b>地市名称："+data.cityName+"<br/><b>公司名称："+data.companyName
						+"<br/><b>行业："+data.industry+"<br/><b>状态："+data.state+"<br/><b>法人："+data.legal
						+"<br/><b>注册资本："+data.registered+"<br/><b>成立日期："+data.establishment+"<br/><b>联系电话："+data.telephone
						+"<br/><b>地址："+data.address+"<br/><b>企业网址："+data.website+"<br/><b>企业邮箱："+data.email+"<br/><b>发展状态："+data.develop
						+"<br/><b>经营范围："+data.scope;
						var content = startDiv+info+endDiv;
						addClickHandler(content,data,enterpriseopts);
        			}
        		});
            }
        },
        size: 5,
        draw: 'intensity'
    };

var heatmapOptions = {
        size: 13,
        gradient: { '0.25': "rgb(0,0,255)", '0.55': "rgb(0,255,0)", '0.85': "yellow", '1.0': "rgb(255,0,0)"},
        max: 100,
        draw: 'heatmap'
    }

var removeMarker = function(e,ee,marker){
	map.removeOverlay(marker);
}

var overlays = [];
var ids = [];
var circlecomplete = function(e, overlay){
	for(var i = 0; i < overlays.length; i++){
        map.removeOverlay(overlays[i]);
    }
	overlays.length = 0;
	if(mapvLayer != null){
		mapvLayer.destroy();
	}
	//创建右键菜单
	var markerMenu=new BMap.ContextMenu();
	markerMenu.addItem(new BMap.MenuItem('删除',removeMarker.bind(e)));
	e.addContextMenu(markerMenu);
    overlays.push(overlay);
    var radius = e.getRadius();
    var center = e.getCenter();
    drawingManager.close();
    //这里根据圆的半径来判断地市，然后返回该地市的所有点位数据，然后进行判断是否在圆内，如果在圆内，则导出这些数据
    geoc.getLocation(center, function(rs){
    	ids = [];
		var addComp = rs.addressComponents;
		var city = addComp.city;
		var longitude = center.lng;
		var latitude = center.lat;
		$.ajax({
			type : "POST",
			url : "map/countDistance",
			data : {
				"cityName" : city,
				"longitude" : longitude,
				"latitude" : latitude,
				"radius" : radius
			},
			dataType : "json",
			success : function(result) {
				for(var i = 0; i < result.length; i++){
					var id = result[i].id;
					ids.push(id);
				}
				if(result.length==0){
					$("#exportBtn").addClass("layui-btn-disabled");
					layer.msg('该区域没有企业数据,请重新框选!');
				}else{
					$("#exportBtn").removeClass("layui-btn-disabled");
					var dataSet = new mapv.DataSet(result);
					mapvLayer = new mapv.baiduMapLayer(map, dataSet, options);
				}
			}
		});
	});
};
var styleOptions = {
    strokeColor:"red",    //边线颜色。
    fillColor:"red",      //填充颜色。当参数为空时，圆形将没有填充效果。
    strokeWeight: 3,       //边线的宽度，以像素为单位。
    strokeOpacity: 0.8,	   //边线透明度，取值范围0 - 1。
    fillOpacity: 0.6,      //填充的透明度，取值范围0 - 1。
    strokeStyle: 'solid' //边线的样式，solid或dashed。
}

//实例化鼠标绘制工具
var drawingManager = new BMapLib.DrawingManager(map, {
    isOpen: false, //是否开启绘制模式
    enableDrawingTool: true, //是否显示工具栏
    drawingToolOptions: {
        anchor: BMAP_ANCHOR_TOP_RIGHT, //位置
        offset: new BMap.Size(60, 5), //偏离值
    },
    circleOptions: styleOptions //圆的样式
});

//添加鼠标绘制工具监听事件，用于获取绘制结果
drawingManager.addEventListener('circlecomplete', circlecomplete);

function addClickHandler(content,data,opts){
	openInfo(content,data,opts);
};

function openInfo(content,data,opts){
	var point = new BMap.Point(data.longitude, data.latitude);
	var infoWindow = new BMap.InfoWindow(content,opts);  // 创建信息窗口对象 
	map.openInfoWindow(infoWindow,point); //开启信息窗口
};


/**
  项目JS主入口
  以依赖Layui的layer和form模块为例
**/    
layui.config({
	base : "static/js/"
}).extend({
    "address" : "mapaddress"
})
layui.use(['form','element','layer','jquery','address'],function(){
	var form = layui.form,
	layer = layui.layer,
	element = layui.element;
	$ = layui.jquery;
	var address = layui.address;
	
	//获取省信息
	address.provinces();
	
//	form.on('select(city)', function(data){
//		if(mapvLayer != null){
//			mapvLayer.destroy();
//		}
//		//var cityID = data.value;
//		var cityName = $("#city").find("option:selected").text();
//		form.render('select'); //这个很重要
//		map.centerAndZoom(cityName,12);
//	});
	
	function showFbusinessinfo(e){
		var point = e.point;
		var content = point.content;
		var point = new BMap.Point(point.lng, point.lat);
		var infoWindow = new BMap.InfoWindow(content,fbusinessopts);  // 创建信息窗口对象 
		map.openInfoWindow(infoWindow,point); //开启信息窗口	
	}
	
	//查询
	$(".search_btn").click(function(){
//		var local = new BMap.LocalSearch(map, {
//			renderOptions:{map: map}
//		});
//		var text = $(".searchVal").val();
//		if(text != ''){
//			local.search(text);
//		}
		if(mapvLayer != null){
			mapvLayer.destroy();
		}
		var data = [];
		var companyName = $(".searchVal").val().trim();
		$.ajax({
			type : "POST",
			url : "map/showByName",
			data : {
				"companyName" : companyName
			},
			dataType : "json",
			success : function(result) {
				if(result.length==0){
					layer.msg('该区域没有企业数据,请重新查询!');
				}else{
					var dataSet = new mapv.DataSet(result);
					var longitude = result[0].geometry.coordinates[0];
					var latitude = result[0].geometry.coordinates[1];
					var new_point = new BMap.Point(longitude,latitude);
					map.setCenter(new_point);
					mapvLayer = new mapv.baiduMapLayer(map, dataSet, options);
				}
			}
		});
	});
	
	//显示所有企业
	$(".showEnterprise_btn").click(function(){
		if(mapvLayer != null){
			mapvLayer.destroy();
		}
		var data = [];
		var province = $("#province").find("option:selected").text();
		var cityName = $("#city").find("option:selected").text();
		var industry = $("#industry").find("option:selected").text();
		if(cityName != '请选择城市' && industry != '请选择行业'){
			$.ajax({
				type : "POST",
				url : "map/show",
				data : {
					"province" : province,
					"cityName" : cityName,
					"industry" : industry
				},
				dataType : "json",
				success : function(result) {
					if(result.length==0){
						layer.msg('该区域没有企业数据,请重新查询!');
					}else{
						var dataSet = new mapv.DataSet(result);
						mapvLayer = new mapv.baiduMapLayer(map, dataSet, options);
					}
				}
			});
		}else{
			layer.msg('请选择城市和行业！', {icon: 6});
		}
	});
	
	//展示热力图
	$(".showHeatmap_btn").click(function(){
		if(mapvLayer != null){
			mapvLayer.destroy();
		}
		var data = [];
		var cityName = $("#city").find("option:selected").text();
		var industry = $("#industry").find("option:selected").text();
		if(cityName != '请选择城市' && industry != '请选择行业'){
			$.ajax({
				type : "POST",
				url : "map/show",
				data : {
					"cityName" : cityName,
					"industry" : industry
				},
				dataType : "json",
				success : function(result) {
					if(result.length==0){
						layer.msg('该区域没有企业数据,请重新查询!');
					}else{
						var dataSet = new mapv.DataSet(result);
						mapvLayer = new mapv.baiduMapLayer(map, dataSet, heatmapOptions);
					}
				}
			});
		}else{
			layer.msg('请选择城市和行业！', {icon: 6});
		}
	});
	
	//清除地图
	$(".batchDel").click(function(){
		if(mapvLayer != null){
			mapvLayer.destroy();
		}
		for(var i = 0; i < overlays.length; i++){
            map.removeOverlay(overlays[i]);
        }
		overlays.length = 0;
	});
	
	//导出
    $(".export_btn").click(function(){
		window.open("test/downData?ids="+ids);
    });
});
